package com.stark.wechat.handler;

import java.io.IOException;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

import com.stark.wechat.util.Tools;

/**
 * 全局异常处理器。
 * <p>匹配规则为内层优先，如 {@link IOException} 继承自 {@link Exception} ，所以当拦截到 {@link NotLoginException} 时，
 * 优先匹配 {@link #handleIOException} 方法。
 * @author mengbin
 * @since 1.1.0
 * @version 1.0.0, 2017/9/22
 */
@ControllerAdvice
public class GlobalExceptionHandler {
	@ExceptionHandler(Exception.class)
    public ModelAndView handleException(Exception e) {
		String err = e.getClass().getSimpleName();
		String errmsg = Tools.getExceptionStackTrace(e);
		
		ModelAndView modelAndView = new ModelAndView("exception/exception");
        modelAndView.addObject("err", err);
        modelAndView.addObject("errmsg", errmsg);
        return modelAndView;
    }
}
